<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/11/25
 * Time: 17:43
 */
namespace app\common\model;

use think\Model;

class OpenCard extends Model
{
    protected $createTime = 'add_time';

    /**
     * 通过二级域名取得company_id
     * @param string $domain
     * @retur array
     */
    public static function get_company_id_by_domain($domain)
    {
        return _uri('open_card', array('id'=>session('card_id')), 'company_id')['company_id'];
        //return 100001;
        if (!$domain) {
            return 0;
        }

        return _uri('open_card', array('domain'=>$domain), 'company_id');
    }


    /**
     * 获取某个公司微信接口地址
     * @param number $company_id
     * @return string
     */
    public static function get_open_card_weixin_url($open_card_id)
    {
        $open_card_id = (int)$open_card_id;
        if (!$open_card_id) {
            return '';
        }
        $key = self::sign_open_card_key($open_card_id);
        if (!$key) {
            return '';
        }

        return SITE_URL.'/weixin?wx_c='.$key;
    }

    /**
     * 加密并获得公司key
     * @param number $company_id 公司id
     */
    public static function sign_open_card_key($open_card_id)
    {
        //
        $open_card_info = _uri('open_card', ['id'=>$open_card_id]);
        if (!$open_card_info) {
            return '';
        }
        $token = $open_card_info['weixin_token'];
        if (!$token) {
            $token = self::init_open_card_token($open_card_id);
        }

        $company_id = $open_card_info['company_id'];
        // 需要加密的字符串
        $sign_str = $token . '|' . $open_card_id . '|' . $company_id ;
        // base64编码
        $base64_str = str_replace('=', '', base64_encode($sign_str));
        // 前五个字符
        $md5_str = substr(md5($sign_str), 0, 5);
        // 随机五个字符
        $random_str = random_hash(5);
        // 5 + ... + 5
        return $md5_str . $random_str . $base64_str;
    }


    /**
     * 如果没有初始化token，再次初始化一次
     * @param int $company_id
     * @return string
     */
    public static function init_open_card_token($open_card_id)
    {
        $token = strtolower(random_hash(10));
        OpenCard::update(['weixin_token'=>$token], ['id'=>$open_card_id]);

        return $token;
    }

    /**
     * 取得公司的token信息
     * @param int $company_id
     * @return String
     */
    public static function get_open_card_weixin_token($open_card_id)
    {
        $res = _uri('open_card', $open_card_id, 'weixin_token');
        return $res['weixin_token'];
    }

    /**
     * 通过二级域名取得card信息
     * @param string $domain
     * @retur array
     */
    public static function get_open_card_by_domain($domain)
    {
        return _uri('open_card', ['id' => session('card_id')]);
        if (!$domain) {
            return array();
        }

        return _uri('open_card', array('domain'=>$domain));
    }

    /**
     * 通过id取得card信息
     * @param string $domain
     * @retur array
     */
    public static function get_open_card_by_id($id)
    {
        //return _uri('open_card', 100001);
        if (!$id) {
            return array();
        }

        return _uri('open_card', array('id'=>$id));
    }

    /**
     * 通过二级域名取得open_card_id
     * @return id
     */
    public static function get_open_card_id()
    {
        return session('card_id');
        //return 100001;
//        $subdomain = Setting::get_subdomain();
//        if (!$subdomain) {
//            return 0;
//        }
//
//        return _uri('open_card', array('domain'=>$subdomain), 'id');
    }

}